#pragma once

typedef struct list_node_t {
	struct list_node_t *next;
} list_node_t;

[[nodiscard]]
list_node_t *list_next_node(list_node_t *node);

void list_append(list_node_t *head, list_node_t *node);

[[nodiscard]]
list_node_t *list_remove(list_node_t *head, list_node_t *node);

[[nodiscard]]
list_node_t *list_get_last_node(list_node_t *head);

void list_make_circular(list_node_t *head);